import Taro from '@tarojs/taro';
import md5 from 'js-md5'
import Request from './request'
import { generateUUID } from '../index'

const http = new Request()
http.setConfig((config) => {
  /* 设置全局配置 */
  config.baseUrl = 'https://b.pos.zanlf.cn/api/v1'; //线上
  if (process.env.NODE_ENV === "production") {
    config.baseUrl = 'https://b.pos.zanlf.cn/api/v1'; //生产环境
  }
  // #ifdef MP-WEIXIN
  // if (Taro.getAccountInfoSync().miniProgram.envVersion == "trial") {
  //   config.baseUrl = 'https://b.pos.zanlf.cn/api/v1'; //线上测试
  // }
  // #endif
  config.header = {
    ...config.header,
    'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
  }
  return config
})

/**
 * 自定义验证器，如果返回true 则进入响应拦截器的响应成功函数(resolve)，否则进入响应拦截器的响应错误函数(reject)
 * @param { Number } statusCode - 请求响应体statusCode（只读）
 * @return { Boolean } 如果为true,则 resolve, 否则 reject
 */
http.validateStatus = (statusCode) => {
  return statusCode >= 200 && statusCode < 300
}

http.interceptor.request((config, cancel) => {
  /* 请求之前拦截器 */
  config.header = {
    ...config.header,
    'content-type': 'application/x-www-form-urlencoded'
  }
  const i = generateUUID()
  const ak = md5('b1e11af57a6108902ab7c2d4d4249cb6' + i)
  config.data.ak = ak
  config.data.i = i
  config.data.cid = 277155 //154456
  let token = Taro.getStorageSync('userInfo').token;
  // console.log('token')
  // if (config.type != "login" && config.type != 'share' && (config.method == "POST" || config.method == "GET")) {
    if (token) { // 如果token不存在，调用cancel 会取消本次请求，但是该函数的catch() 仍会执行
      config.data.token = token;
    } 
  // else {
  //     cancel('token 不存在')
  //   }
  // }

  return config
})

http.interceptor.response((response) => {
  /* 请求之后拦截器 */
  if (response.data.code == 401) {
    //请先登录
    Taro.removeStorageSync('userInfo')
    Taro.reLaunch({
      url: '/pages/login/index'
    })
  }
  console.log('response', response)
  return response
}, (response) => { // 请求错误做点什么
  if (response.data.code == 401) {
    //请先登录
    Taro.removeStorageSync('userInfo')
    Taro.reLaunch({
      url: '/pages/login/index'
    })
  }
  return response
})

export {
  http
}
